# # 老安串讲资料之——对象的生命周期
# # 1.生命周期概念：顾名思义，描述的是一个物体从诞生到消亡的过程。那么对象的生命周期，描述的就是一个对象从无到有的一个过程。
# # 2.对象的生命周期过程：当我们创建一个对象时，会自动分配一个内存地址给这个对象使用，这就是生命周期的开始；当我们不使用这个对象时，就会回收这个对象，并释放对象所占用的内存地址，这就是对象的消亡
# # 3.如何监控对象的生命周期：主要通过以下三个方法监控：
# #     1.__new__方法：创建实例
# #     2.__init__方法：初始化实例
# #     3.__del__方法：回收实例
# # 举个栗子：
# class Myobj(object):
#     def __new__(cls, *args, **kwargs):
#         print('我被创建啦！')
#         return object.__new__(cls)
#
#     def __init__(self):
#         print('我被初始化啦！')
#
#     def __del__(self):
#         print('我被回收啦！')
#
# obj = Myobj()
#
# # 运行结果：
# # D:\project\venv\Scripts\python.exe E:/老安课程串讲资料/老安串讲资料12——对象的生命周期.py
# # 我被创建啦！
# # 我被初始化啦！
# # 我被回收啦！
# #
# # Process finished with exit code 0
#
# 专题讲解：Python中的__new__方法
# 1.概念基础
#     1.__new__方法是在新式类中新出现的方法，它作用在构造方法建造实例之前
#     2.可以这么理解：在Python中存在于类里面的构造方法__init__负责实例的初始化，而在__init__方法调用之前，__new__方法决定是否要使用这个__init__方法进行初始化，因为__new__可以调用其他类的构造方法或者直接返回别的对象作为本类的实例
#     3.__new__方法的特性：
#         1.__new__方法是在类准备将自身实例化时调用
#         2.__new__方法始终都是类的静态方法，即使没有被加上静态方法装饰器


class MyObj(object):
    def __new__(cls, *args, **kwargs):
        ...
        return object.__new__(cls)

    def __init__(self):
        pass

